Første møde med Python og UCloud

Jeppe Fjeldgaard Qvist

2025-09-01

Kodning?! 🐍

  • Hvad er jeres erfaring (hvis I har nogen)?

  • Hvordan forstår i “kodning”; hvorfor bruger vi ikke bare Excel eller lign.?

  • Hvis I har erfaring; er det en god erfaring? Hvordan lærte i det bedst; hvad var svært?

“Kodning” vs. Excel

Reproducerbar, skalerbar, fleksibel og automatisering!

Når Excel kommer til kort:

  • Analysere 100.000-vis af rækker data

  • Gentage den samme analyse hver [dag/måned/år] med nye data

    • I Excel [eller lign.], hvis data ændrer sig, skal du gentage alle klik.
  • Dokumentere præcist, hvad du har gjort, så en kollega kan gentage det

  • Kombinere data fra [mange] forskellige kilder

  • Lave avancerede statistiske modeller

Python; et kodesprog

Tænk på kodning som et meget detaljeret opskrift. Så fremfor en abstract “bland ingredienserne” (Excel; peg-og-klik), skriver vi:

Reproducerbar

Hvordan fik du resultatet?

monthly_average = data.groupby('month')['sales'].mean()

Alle trin i koden er en komplet log over hvad du har gjort ved dataen for at få dit output. Når næste års data kommer, ændres blot url = "https://...." til den nye data og det hele køres igen.

Skalerbarhed

Den samme kode, der arbejder med 100 rækker, kan håndtere 1 million rækker uden problemer.

Fleksibilitet

Python har tusindvis af specialiserede “værktøjskasser” (biblioteker) til alt fra grundlæggende statistik og datahåndtering til kunstig intelligens.

Automatisering

Skriv koden én gang, kør den hver dag/uge/måned/år automatisk.

Kodning: Kommunikation med maskinen

Kodning skal være utvetydigt og logisk struktureret

I skal på kurset oparbejde en algoritmisk tænkning.

  • Dekomposition: Bryde komplekse problemer ned i mindre, håndterbare dele
  • Mønstergenkendelse: Identificere ligheder på tværs af forskellige problemer
  • Abstraktion: Fokusere på de væsentlige aspekter og ignorere irrelevante detaljer
  • Algoritmedesign: Step-by-step løsninger der kan automatiseres

Hvorfor Python 🐍

  • (Relativt) simpelt.

  • Stor brugerbase.

  • Omfattende biblioteker til alle forskningsområder.

Python: Tanke til handling

Niveau 1: Menneskelig tanke

“Jeg vil gerne finde gennemsnittet af mine salgstal”

Niveau 2: Algoritmisk tænkning

“Læg alle tallene sammen, divider med antallet af tal”

\[ \bar{x} = \frac{x_1 + x_2 + x_3 + \ldots + x_n}{n} = \frac{\sum_{i=1}^{n} x_i}{n} \]

Niveau 3: Python-kode

  1. \(\text{total} = \sum_{i=1}^{n} \text{sales}_i\)

  2. \(\text{gennemsnit} = \frac{\text{total}}{n} = \frac{\sum_{i=1}^{n} \text{sales}_i}{n}\)

Hvor \(n\) er antallet af salgstal i datasættet.

Niveau 4: Maskinsprog

LOAD data
ADD all values
DIVIDE by count
STORE result

“Kan du hente en kop kaffen?”

Vi forstår implicit: Gå ud i køkkenet, tag en kop, hæld kaffe i koppen, kom tilbage.

Oversat til eksplicitte instruktioner:

  • cup = get_cup_from_kitchen()
  • coffee = pour_coffee(cup)
  • return coffee_to_desk(cup)

Præcise instrukser

Hvilke salg er større end 10.000 (DKK)?

  1. Tag første tal fra listen
  2. Er det større end 10000? Hvis ja, print det
  3. Tag næste tal
  4. Gentag indtil listen er tom

Variable og Pythons hukommelse

data har virket flere steder i vores kode, selvom vi kun har indlæst den én gang.

pris = 100

moms = pris * 0.25

total = pris + moms

print(total)
  1. Tag værdien 100 og gem det i hukommelseslokation kaldet ‘pris’

  2. Tag værdien fra ‘pris’, gang med 0.25, gem resultatet som ‘moms’

Maskinen er ligeglad med om navne giver mening. Vi bruger meningsfulde navne for at forstå vores egen kode.

Funktioner: Genanvendelige “opskrifter”

Defination af funktioner svarer til at lære maskinen en ny “kommando”. Nu kan vi sige beregn_moms(100) og maskinen ved præcist, hvad den skal gøre, fordi vi har defineret hver eneste trin.

Den fundamentale erkendelse om maskiner

Maskiner er utroligt dumme men utroligt hurtige og pålidelige. De kan kun gøre simple ting som:

  • Gemme tal
  • Sammenligne værdier
  • Hoppe til forskellige dele af koden
  • Gentage instruktioner

Men de kan gøre disse simple ting milliarder af gange per sekund uden fejl.

Kodningens kunst ligger i at bryde komplekse menneskelige problemer ned til disse simple operationer og derefter komponere dem sammen til kraftfulde løsninger.

Computational Social Science (Digitale metoder til kriminalitetsforståelse)

Vi flytter fra små, lokale undersøgelser til analyser af massive datasæt der kan afsløre mønstre, vi aldrig kunne se før.

  • Traditionel tilgang: En kriminolog interviewer 50 tidligere indsatte over 6 måneder for at forstå recidiv-mønstre.

  • Computational tilgang: Analyser alle \(n\) millioner straffesager fra de sidste 20 år og identificer præcise risikofaktorer for tilbagefald.

Spatial kriminologi: Når kriminalitet [data] får koordinater

Netværksanalyse: Kriminelle organisationer [data] som grafer

Predictive Policing: Algoritmer der forudsiger [data] kriminalitet

Text Mining: Analysere millioner af [text] politirapporter

De store spørgsmål: Etik og bias

1